package com.sparkseries.service;

import com.sparkseries.common.util.domain.Result;
import com.sparkseries.domain.vo.SysDepartmentVO;
import com.sparkseries.domain.vo.SysCompanyVO;
import com.sparkseries.domain.vo.SysUserVO;
import com.sparkseries.dto.SysCompanyDTO;

import java.util.List;

/**
 * 企业管理
 */
public interface SysCompanyService {
    /**
     * 创建企业
     *
     * @param sysCompanyDTO 企业传输类
     * @return 默认响应类
     */
    Result<?> createCompany(SysCompanyDTO sysCompanyDTO);

    /**
     * 删除企业
     *
     * @param companyId 企业id
     * @return 默认响应类
     */
    Result<?> deleteCompany(Long companyId);

    /**
     * 修改企业
     *
     * @param sysCompanyDTO 企业传输类
     * @return 默认响应类
     */
    Result<?> updateCompany(SysCompanyDTO sysCompanyDTO);

    /**
     * 修改企业状态
     *
     * @param companyId 企业id
     * @param status    状态     0: 失效 1: 激活
     * @return 默认响应类
     */
    Result<?> updateStatus(Long companyId, Integer status);

    /**
     * 获取企业信息
     *
     * @param companyId 企业id
     * @return 企业响应类
     */
    Result<SysCompanyVO> getCompanyById(Long companyId);

    /**
     * 企业列表
     *
     * @param detail 查找关键词，可为空
     * @return 包含企业响应类的集合
     */
    Result<List<SysCompanyVO>> listCompany(SysCompanyDTO sysCompanyDTO, String detail);

    /**
     * 获取企业管理员信息
     *
     * @param companyId 企业id
     * @return 用户响应类
     */
    Result<SysUserVO> getCompanyAdmin(Long companyId);

    /**
     * 企业添加部门
     *
     * @param departmentIds 部门id
     * @param companyId     企业id
     * @return 默认响应类
     */
    Result<?> insertDepartments(Long[] departmentIds, Long companyId);

    /**
     * 企业删除部门
     *
     * @param departmentIds 部门id
     * @param companyId     企业id
     * @return 默认响应类
     */
    Result<?> deleteDepartments(Long[] departmentIds, Long companyId);

    /**
     * 查找某企业下的所有部门
     *
     * @param companyId 企业id
     * @return 部门响应类的集合
     */
    Result<List<SysDepartmentVO>> listDepartmentByCompanyId(Long companyId);

}
